var net = new Object();

net.READY_STATE_UNINITIALIZED = 0;
net.READY_STATE_LOADING = 1;
net.READY_STATE_LOADED = 2;
net.READY_STATE_INTERACTIVE = 3;
net.READY_STATE_COMPLETE = 4;

net.ContentLoader = function(url, onload, parameter, onerror){
	this.url = url;
	this.req = null;
	this.onload = onload;
	this.onerror = (onerror) ? onerror : this.defaultError;
	this.parameter = (parameter) ? parameter:null;
	this.loadXMLDoc(url);
}

net.ContentLoader.prototype = {
	loadXMLDoc: function(url){
		if (window.XMLHttpRequest){
			this.req = new XMLHttpRequest();
		}
		else if (window.ActiveXObject){
			this.req = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if (this.req){
			try{
				var loader = this;
				this.req.onreadystatechange = function(){
					loader.onReadyState.call(loader);
				}

				this.req.open('POST', url, false);		
				if(this.parameter != null)
				{		
               		this.req.setRequestHeader("Content-Length",this.parameter.length);
                	this.req.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded;charset=utf-8");				
					this.req.send(this.parameter);
				}
				else
				{
					this.req.send(null);
				}
			}
			catch (err){
				this.onerror.call(this);
			}
		}
	},
	onReadyState: function(){
		var req = this.req;
		var ready = req.readyState;
		if (ready == net.READY_STATE_COMPLETE){
			var httpStatus = req.status;
			if (httpStatus == 200 || httpStatus == 0){
				this.onload.call(this);
			}
			else{
				this.onerror.call(this);
			}
		}
	},
	defaultError: function(){
		alert("error fetching data!"
		+ "\n\nreadyState:"
		+ this.req.readyState 
		+ "\nstatus: "
		+ this.req.status
		+ "\nheaders: "
		+ this.req.getAllResponseHeaders());
	}
}

function getXmlNodeContent(documentNode, nodeName) {
	var nodes = documentNode.getElementsByTagName(nodeName);
	if (nodes.length == 0)
	{
		return "";
	}
	if (nodes[0].childNodes.length == 0)
	{
		return "";
	}
	return nodes[0].childNodes[0].nodeValue;
}